package com.company;

import java.math.BigInteger;

public class Main {

    public static void main(String[] args) {
        //todo 习题1： byte、int 与 二进制 互转，先将byte的127、128、-128、-128转二进制，再将这些二进制转int
        System.out.println("习题1： byte、int 与 二进制 互转，先将byte的127、128、-128、-128转二进制，再将这些二进制转int");
        byte b1 = 127;
        int i1 = (int) b1;
        String s1 = Integer.toBinaryString(i1);
        System.out.println(s1);//二进制：1111111
        //二进制转十进制
        System.out.println(Integer.parseInt(s1, 2));

        byte b2 = -127;
        int i2 = (int) b2;
        String s2 = Integer.toBinaryString(i2);
        System.out.println(s2);//11111111111111111111111110000001
        //二进制转十进制
        BigInteger bi = new BigInteger(s2, 2);
        System.out.println(bi.intValue());

        int i3 = 128;
        String s3 = Integer.toBinaryString(i3);
        System.out.println(s3);//10000000
        //二进制转十进制
        System.out.println(Integer.parseInt(s3, 2));


        byte b4 = -128;
        int i4 = (int) b4;
        String s4 = Integer.toBinaryString(i4);
        System.out.println(s4);//11111111111111111111111110000000
        //二进制转十进制
        BigInteger bi2 = new BigInteger(s4, 2);
        System.out.println(bi2.intValue());

        //todo 习题2：写个工具类，实现类型转换，String 转 (int、long、float、double、byte[])，(byte[]、int) 转 String
        System.out.println("习题2：写个工具类，实现类型转换，String 转 (int、long、float、double、byte[])，(byte[]、int) 转 String");
        int type = 1;
        Object o = Parse.parseObject("100", type);
        System.out.println(o);

        long type2 = 1L;
        Object o2 = Parse.parseObject("100", type2);
        System.out.println(o2);

        float type3 = 1f;
        Object o3 = Parse.parseObject("100", type3);
        System.out.println(o3);

        double type4 = 1.00;
        Object o4 = Parse.parseObject("100", type4);
        System.out.println(o4);


        byte type5 = 1;
        Object o5 = Parse.parseObject("100", type5);
        System.out.println(o5);

        byte param1 = 100;
        String str1 = Parse.parseString(param1);
        System.out.println(str1);

        int param2 = 200;
        String str2 = Parse.parseString(param2);
        System.out.println(str2);


        //todo 习题3：写个工具类，实现ASCII和char互转
        System.out.println("习题3：写个工具类，实现ASCII和char互转");
        char c = Tools.byteAsciiToChar(65);
        System.out.println(c);

        byte b = Tools.charToByteAscii2('A');
        System.out.println(b);

        //todo 习题4：写个工具类，实现二进制、十进制、十六进制互转
        System.out.println("习题4：写个工具类，实现二进制、十进制、十六进制互转");
        System.out.println("原始数据：11111111111111111111111110000001");
        //Tools.binaryConversion("11111111111111111111111110000001");
        Tools.binaryConversion("11111111111111111111111110000001",2);
        System.out.println("----------------------------------------");
        System.out.println("原始数据：128");
        //Tools.decimalConversion(128);
        Tools.binaryConversion(128,10);
        System.out.println("----------------------------------------");
        System.out.println("原始数据：80");
        //Tools.hexadecimalConversion("80");
        Tools.binaryConversion("80",16);


    }


}
